package com.starmark.sys.org.api.service;

import com.starmark.sys.org.api.dto.OrgElementDto;
import com.starmark.sys.org.api.dto.OrgUserInfoDto;

import java.util.List;
import java.util.Map;


/**
 * 用户接口
 */
public interface IOrgUserApiService {

    /**
     * 通过ID查找相关信息
     *
     * @param id 用户主键
     * @return 用户信息
     */

    OrgUserInfoDto loadUserById(String id);

    /**
     * 支持手机,登陆名等多种方式查找用户信息
     * @param userMap 支持手机,登陆名等多种方式查找用户信息
     * @return 用户信息
     */
    OrgUserInfoDto loadUserInfoByMap(Map<String,Object> userMap);


    /**
     * 通过用户ID获取用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    default String getName(String id){
        return this.loadUserById(id).getName();
    }

    /**
     * 通过关键字查找人员信息
     *
     * @param searchKey 关键字
     * @param pageSize  页码
     * @return 组织信息
     */
    List<OrgElementDto> getOrgTreeBySearchkey(String searchKey,
                                              int pageSize);


    /**
     * 通过父节点，查找下级人员信息
     *
     * @param id 父ID
     * @return 人员信息集合
     */

    List<OrgElementDto> getOrgTreeById(String id);



    /**
     * 通过用户ID集合获取用户集合
     *
     * @param userIds 用户ID集合
     * @return 用户集合
     */

    List<OrgUserInfoDto> getUserListByIds(List<String> userIds);



    /**
     * 校验用户密码是否正确
     *
     * @param userId   用户ID
     * @param password 用户密码// 暂时不加密
     * @return 是否正确
     */

    boolean checkUserPassword(String userId, String password);


    /**
     * 更新用户密码
     * @param userId 用户ID
     * @param password 密码
     */
    void updatePwd(String userId,String password);
}
